package xrate

import (
	"fmt"

	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 星级详情信息
//
//	id	批次ID
func StartInfo(id uint) (*Start, error) {
	if id == 0 {
		return nil, xerror.New("ID传输错误")
	}
	// 验证缓存是否存在
	mod := Start{}
	cache_key := xcache.Key("xrate.start_info", id)
	if xcache.Exists(cache_key) {
		if err := xcache.GetStruct(cache_key, &mod); err == nil {
			return &mod, nil
		}
	}
	// 读取数据库
	if _default.DB == nil {
		return nil, xerror.New("数据库未连接")
	}
	err := _default.DB.Table(_default.StartName).Where("id", id).Find(&mod).Error
	if err != nil {
		return nil, err
	}
	if mod.ID == 0 {
		return nil, fmt.Errorf("数据[%d]未找到", id)
	}
	// 写入缓存
	xcache.SetStruct(cache_key, &mod)
	return &mod, nil
}
